package cn.wh.db.router.strategy;

import cn.wh.db.router.DBRoutingConfig;
import cn.wh.db.router.bean.RoutingEntity;

/**
 * @Author wh
 * @Description 路由策略
 * @Date 2023/3/28 13:37
 * @Version 1.0
 **/
public interface IDBRoutingStrategy {




    /**
     * 获取路由属性配置
     * @return
     */
    DBRoutingConfig getDBRoutingConfig();


    /**
     * 计算路由
     */
    void doRouter(String dbKey);


    /**
     * 手动设置分库路由
     *
     * @param dbIdx 路由库，需要在配置范围内
     */
    void setDBKey(String dbIdx);

    /**
     * 手动设置分表路由
     *
     * @param tbIdx 路由表，需要在配置范围内
     */
    void setTBKey(String tbIdx);

    /**
     * 获取分库数
     *
     * @return 数量
     */
    int dbCount();

    /**
     * 获取分表数
     *
     * @return 数量
     */
    int tbCount();

    /**
     * 清除路由
     */
    void clear();







}
